Нужно повторить попытку открыть 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 сработал, я отмечу ваш ответ как правильный, потому что сейчас я понятия не имею.