LINUX.ORG.RU
ФорумTalks

alsa api vs oss4 api


0

2

Что кто думает на эту тему? Я смотрел их, так мне oss api видится куда логичнее и красивее, чем alsa. Но может когму alsa api нравится?

★★★★★

У Алсы api ужасен, но и ставить осс с их богомерзкой лицензией и хреновой поддержкой usb микрофонов желания нету вообще. Поэтому JACK - мой выбор.

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

А разве jack это не просто соединитель различных источников и приемников? Разве он умеет сам выводить в звуковушку и читать с микрофона?

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от daemonpnz

Да без разницы, хоть WTFPL, только если хочешь полноценную систему, со всеми модулями, придётся таки выбрать 4Front Commercial License.

kranky ★★★★★
()

Это карма.

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

Придётся таки портировать драйвер из *BSD или написать самому?

quantum-troll ★★★★★
()

ALSA API - это хороший пример как делать не надо. Но к сожалению что есть, то есть.

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

В Линуксе джэк отлично может работать поверх алсы, просто вместо её ужасного api, используешь api джэка, который прекрасен.

kranky ★★★★★
()

А расскажите-ка про них поподробнее, мне как раз нужно вникнуть. Насколько я понимаю, у ALSA единицей ввода/вывода является pcm'ы; дефолтные pcm'ы создаются драйвером, но можно создавать свои и заставлять их делать весьма сложные вещи - например, раздельно выводить разные звуковые потоки через разные каналы сарраунд71-карты. Но эти pcm'ы - они только внутри ALSA существуют, обращаться к ним можно только через alsa-lib, в дерево устройств они не экспортируются.

При этом в дереве устройств все же создаются какие-то ноды - у моей 7.1-карты это controlC0, pcmC0D0c, pcmC0D0p, pcmC0D1c, pcmC0D2p, seq, timer. Как и на каком уровне они используются, я не понял. Почему 4 штуки pcm* - тоже не понял. Похоже, С - card, D - device, c - capture, p - playback, но это как-то не соотносится с конфигурацией самой платы (по идее, у нее на железном уровне 3 нормальных канала, один басовый, линейный вход и микрофон).

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

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

Проблема в том, что единственный подходящий механизм управления доступа к устройствам - это ACL'ы на уровне udev. Именно на этом уровне раскидывает устройства systemd-logind, то же самое планировалось в брошенном consolekit. Боюсь, единственный выход - патч для ALSA, чтобы она экспортировала псмы в дерево устройств, просто как заглушки, и проверяла их права, прежде чем разрешать процессу обращение. Тогда утилита через ALSA создает нужные pcm'ы, systemd-logind ставит на них теги мест в базе udev, logind при входе пользователя с места, к которому привязан pcm, ставит для него разрешающие ACL-права, а пользовательский экземпляр PulseAudio его подхватывает.

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

Что у тебя завелось в варианте 4Front Commercial License, что не завелось в FOSS варианте?!

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

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

Что касательно возможности направлять звук в различные каналы, что-то на эту тему есть, но я с этим не связывался. Но, очевидно, всегда есть возможность гнать тишину в первые каналы, а звук пускать в последние 2.

cvs-255 ★★★★★
() автор топика

У пульса Simple API ещё красивее :]

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

Поэтому JACK - мой выбор.

JACK поверх OSSv4 же!

O02eg ★★★★★
()
Ответ на: комментарий от cvs-255

JACK позволяет абстрагироваться от внутренностей ALSA.

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

кроме NIH нету причины для существования alsa

Кто-то пропускал уроки истории -_-

GotF ★★★★★
()

в ALSA ужасный API, но более гибкий чем в OSS. вообще, из всех API с которыми мне довелось поработать (sdl, openal, alsa, oss, dsound[3d], multistream, xaudio[2], miles, и может что-то еще забыл) самый удобный API на мой вкус у dsound.

waker ★★★★★
()

Судя по примерам вывода osstest на pastebin, оно создает ноды для вывода через отдельные каналы и многоканальные конфигурации.

Кстати, OSS же в мейнлайн ядре есть. Хотя почему-то deprecated. Она там из апстрима?

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

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

Ага.

Кстати, OSS же в мейнлайн ядре есть. Хотя почему-то deprecated. Она там из апстрима?

Нет, это вроде древнее OSS3.

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

Нет, это вроде древнее OSS3.

И зачем они так делают? Смысл держать в меняющемся ядре заброшенную и никому не нужную старую версию, и не включать новую?

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

Смысл держать в меняющемся ядре заброшенную и никому не нужную старую версию

Не знаю, её всё равно никто при сборке не включает, так что пофигу.

не включать новую?

Зачем? Железа она поддерживает меньше, имеет кучу проблем, не предоставляет таких возможностей, как ALSA.

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

ну как, нет причины. Есть: OSS4, емнип, покрывает только базовую функциональность - проигрывать и записывать звук.

По остальному - увы и ах (я, правда, достаточно давно не тыкал OSS4, поправьте, если не так)

- Better support for USB audio devices. With OSS output is experimental, input is not implemented.

- Support for Bluetooth audio devices.

- Support for AC'97 and HDAudio dial-up soft-modems such as Si3055.

- Better support for MIDI devices. With OSS you will have to use a software

- Support for suspend. OSS and associated programs will need to be closed first.

- Better support for jack detection. On some HD motherboards users will need to turn down the speaker volume when plugging in their earphones.

- Better support for applications that use the ALSA API and do not support the OSS API.

от себя добавлю - alsa позволяет создавать виртуальные устройства и регуляторы любой сложности, в OSS4, емнип, этого нет

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

Причем так, чтобы один пользователь не мог перехватывать поток другого.

отредактировать $USERNAME/.asoundrc должным образом, чтобы дефолтным устройством для каждого юзера был свой девайс (hw:X,Y)

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

Угу, Пастернака не читал, но осуждаю. Коммерческая отличается только добавлением модулей для карточек типа Lynx и Lynx Two, которые патентно огорожены, и дрова для которых нельзя поставлять под открытой лицензией. У тебя есть Lynx Two?

Кстати, закрытую версию без техподдержки можно скачать бесплатно.

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

Зато OSS звук не портит, в отличие от ALSA, которая имеет привычку выдавать вместо одного - два потока с небольшим смещением. К чему это приводит - смотреть в любом учебнике по тегу интермодуляция.

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

отредактировать $USERNAME/.asoundrc должным образом, чтобы дефолтным устройством для каждого юзера был свой девайс (hw:X,Y)

Это не помешает процессам обращаться к чужим девайсам

(hw:X,Y)

Но ведь на этом уровне отдельные каналы не видны. Например, у моей карты, насколько я вижу, этих девайсов два - в первом все 4 канала 7.1, линейный и микрофонный входы, в другом - IEC958. Вероятно, ноды СxDy[cd] соответствуют именно им.

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

Это не помешает процессам обращаться к чужим девайсам

Вроде как есть настройки прав доступа в традиционном виде ugo.

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

На уровне устройств карты? Да, на права доступа к нодам в /dev/snd она смотрит.

На уровне каналов устройства - нету. По крайней мере, я не нашел.

shatsky ★★
()

Попробовал OSS. Звуковая карта встроенная Intel HDA. Удивление, если в alsa на 5% - 15% громкости слышен шум, то в OSS звук чистый и на низкой громкости O_o

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

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

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

http://pastebin.com/j44GQXyM

Я так понимаю, у меня имеется: одна карта, два устройства, по одному подустройству на каждом. Ими же никак нельзя манипулировать, только pcm-ами (-L)?

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

Смысл держать в меняющемся ядре заброшенную и никому не нужную старую версию, и не включать новую?

Личная прихоть Линуса

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от lazyklimm

Это тебе так кажется, смещение там не две секунды, надо сравнить со звучанием OSS или аппаратным CD плэйером, чтобы услышать разницу. Или померять спектр сигнала на выходе.

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

Тогда нельзя будет написать, что она DEPRECATED.
Очевидно же!

quantum-troll ★★★★★
()

мне oss api видится куда логичнее и красивее, чем alsa

+100500

alsa - убожество по сравнению с OSS

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Motif

ну, вечером если не забуду - проверю, хотя, слабо верится, я никаких искажений не слышу (ну, кроме помех от интегрированной видеокарточки на интегрированной же звуковушке при включенном линейном входе)

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