Re: Идеологически верный звукосервер.
On 18.02.2010 22:55, Ed wrote:
> Yuriy Kaminskiy wrote:
>> On 23.11.2009 21:07, Ed wrote:
>>
>>>>>> flashpugin-nonfree имеет гадкую способность захватывать /dev/snd/*
>>>>>> самолично.
>>>>>> И пока не пришебешь iceweasel - держать.
[...]
>> Если держать аудио-устройство открытым в dmix (к примеру, запущенным
>> mpd), то никто его эксклюзивно зохавать его не сможет.
> сейчас проверил: пустил параллельно с ютубовским роликом mplayer - они
> друг другу не мешают, значит flash не открывает аудиоустройство
> эксклюзивно. но, несмотря на это, evince периодически блокирует
> воспроизведение звука.
Начать с того, что я предложил: попробовать держать устройство *постоянно*
открытым в каком-то процессе. До запуска firefox.
> что и где не так?
>> PS Отдельная проблема - с тем, что libasound за каким-то [beep] не
>> ставит на всё ей открытое fcntl(FCLOEXEC). В результате у evince/xarchiver
>> оказывается /dev/snd/pcmXX про который он ничего не знает, и ничего сделать
>> с ним не может.
>> FWIW, разработчики в курсе и исправлять отказались :-E На мой взгляд
>> это баг именно libasound, поскольку этот fd скрыт внутри структур алсы, и
>> приложение ничего разумного с ним сделать не может.
> гхм...
...И я таки чуть-чуть посмотрел в кишки alsa-lib на предмет реализации dmix,
если я правильно понял - этот баг вполне может играть в этом случае: флеш-плагин
открывает dmix, dmix открывает железячное устройство, потом firefox запускает
evince [не закрыв железное устройство], потом флеш закрывает dmix (и дескриптор
железного устройства, который был в процессе firefox), но ещё дескриптор
остаётся висеть внутри evince -> для всех остальных облом.
И держание устройства открытым должно этот баг замаскировать (только запущенный
до того плеер держит открытый дескриптор устройства).
Впрочем, я могу и ошибаться.
Экспериментировать мне сейчас негде - моя звуковая карточка умеет микшировать в
железе :-) [и что я будут делать, если она сдохнет - не представляю:
производитель помер смертью храбрых, современных более-менее бюджетных карточек
умеющих микшировать в железе хрен найдёшь :-\
а, помимо проблем из топика, с dmix/hda-intel mpd жрёт при проигрывании 12-20%
cpu {на ресемплинге}, с hw/au8830 - 3%], флеш-плагина у меня нет и не будет,
xarchiver и evince отсутствуют ;-)
Если я таки прав ;-), то могу только помимо того посоветовать ещё раз поругаться
с разработчиками alsa-lib ;-) Потому как после exec использовать открытый
алсовый fd всё равно абсолютно невозможно - для этого надо передавать в
запущенный процесс внутренние структуры alsa, и требовать от программы закрывать
все fd подряд перед exec - абсолютно неправильно (она не знает и не может знать
какие из них переданы ей специально и будут нужны в потомках).
Reply to: