Нужно повторить попытку открыть alsa для его работы

Я могу без проблем запустить aplay и воспроизвести тестовый файл wav.

В моем приложении вызов snd_pcm_open выдает следующую ошибку:

ALSA lib conf.c:3357:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default

Я проверил код в aplay, и я использую то же имя устройства ("по умолчанию") и тот же режим. Коды практически одинаковы, только то, что aplay - это всего лишь один файл для тестирования ALSA, и я пытаюсь запустить ALSA внутри очень большого приложения.

Это становится еще более странным, когда я понял, что, просто повторяя вызов после короткого сна, это работает.

Если вместо открытия устройства я пытаюсь выполнить snd_ctl_open, я получаю сообщение об ошибке

ALSA lib conf.c:3357:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib control.c:954:(snd_ctl_open_noupdate) Invalid CTL hw:0
control open (0): No such file or directory

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

что может вызвать это поведение? Я не хочу дважды вызывать snd_pcm_open. Симптоматично, что что-то не так.

Я бегу Ubuntu.

1 ответ

Установка пакета libasound2-plugins:i386 решил проблему.

Но если кто-нибудь знает, почему второй звонок в ALSA сработал, я отмечу ваш ответ как правильный, потому что сейчас я понятия не имею.

Другие вопросы по тегам