[sisyphus] доступ к alsa из-под разных пользователей
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Сб Ноя 12 21:01:16 MSK 2005
On Sat, Nov 12, 2005 at 06:57:39PM +0200, Artem wrote:
> Продолжая терзать slmodemd , стал добавлять в него софтовый вывод звука
> (тот, который должен выводиться через отсутствующий у меня, и наверное,
> у многих владельцев ноутбуков модемный динамик). Вот уже и модем начал
> голос подавать (в виде прерывистого и более высокчастотного писка пока,
> но это уже вопросы конверсии различных частот оцифровки и синхронизация
> размеров буферов - решаются с помощью того же alsa api).
> Т.к. slmodemd работает из-под root (под обычным user вроде тоже
> работает, но выдает ошибки при старте - жалуется на memory allocation и
> еще на что-то), то после старта из-под рута, он открывает звуковое
> устройство alsa default - и после этого все программы (хmms, aplay)
> из-под простых пользователей начинают ругаться на то, что нет доступа к
> звуковому устройству (хотя у меня настроен dmix). Стартую slmodemd
> из-под простого пользователя и в под тем же пользователем пробую xmms -
> звуки от модема и от xmms нормально микшируются.
>
> Подозревая, что это какие-то особенности sisyphus, отсылаю письмо сюда.
Нет, всё хуже - это особенности dmix. Нужно задавать ему параметры:
ipc_key INT # Unique ipc key
ipc_perm INT # ipc permissions (default 0600)
ipc_gid INT # ipc gid (default -1 = disable)
ipc_key_add_uid BOOL # Add current uid to ipc_key
dmix использует SysV IPC (разделяемую память и семафоры, причём ему
нужно два сегмента разделяемой памяти - в одном управляющая
информация, в другом буфер для звуковых данных). Первый процесс,
использующий dmix, выполняет fork(), и получившийся новый процесс
становится сервером; остальные процессы получают от сервера дескриптор
реального звукового устройства (для этого используется unix socket в
/tmp, имя сокета передаётся через сегмент разделяемой памяти).
Кстати, параметр ipc_gid, необходимый для раздачи доступа к dmix,
появился совсем недавно - в libalsa-1.0.9 его нет, нужна ещё
официально не вышедшая 1.0.10.
> P.P.S. Это только у меня в XMMS при выводе через dmix не работает
> "пауза"? Воспроизведение останавливается, но продолжить потом нельзя -
> нужно сначала композицию включать кнопкой play. При указании вывода
> напрямую в hw:0.0 - все работает.
Что-то там сломано - возможно, что и в самом dmix.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20051112/4e1017dc/attachment-0003.bin>
Подробная информация о списке рассылки Sisyphus