1) Хочется понять в деталях, как userspace взаимодействует со звуковыми устройствами через ALSA. Существуют ли для устройств файлы в /dev или всё через ioctl и как именно.
2) Если открыть в современной Ubuntu любое ALSA - устройство (hw:0,0), то поднимается процесс pulseaudio. Если его грохнуть - звук останавливается. Если pulseaudio снесни из системы - ALSA работает без него. Какая связь между alsa и pulseaudio и как она реализована? Зачем - знаю, как - не знаю. pulseaudio как-то перехватывает обращения приложений к ALSA, предоставляет всем возможность открыть одно и то же устройство и микширует их потоки? Как реализован этот перехват, причём такой прозрачный, что pulseaudio можно снести и ничего не сломается? Или в убунте сносилка умная (-;
3) Приоритетность ALSA-кода. Звуковуха с аппаратным 48000 требует ресемплинга для других ЧД. Но устройство hw:0,0 можно открыть на 44100, то есть ресемплинг делается на уровне системы ALSA прозрачно для приложений. Какой приоритет у этого кода? Есть непонятный эффект: имеется приложение, рисующее с помощью Qt картинку примерно 1024x1024, плавно (30fps) движущуюся подобно прокручивающейся странице документа. В старой gentoo не было проблем, в современной убунте в звуке появляются слышимые эффекты (неск раз в секунду), похожие на пропуски воспроизведения семплов. Если такое приложение свернуть, оно жрёт столько же проца, но не пользуется иксами - эффект пропадает. Это связано с более высоким приоритетом у процесса xorg над кодом, работающим со звуковыми устройствами?