Непонятная ошибка из функции libasound snd_pcm_hw_params - PullRequest
0 голосов
/ 01 февраля 2020

Мой вопрос связан с функцией libasound с именем "snd_pcm_hw_params" в связи с кодом для воспроизведения звукового файла. Я новичок в программировании ALSA. Используя пример кодирования, который я нашел в inte rnet, я написал небольшую программу для воспроизведения 7-секундного файла .wav на звуковой карте по умолчанию. Когда я запускаю этот код несколько раз подряд, иногда (но не всегда) необходимый вызов snd_pcm_hw_params для записи ранее заполненной структуры snd_hw_params_t в драйвер, я получаю код ошибки -2 (ENOENT). Я понятия не имею, что это значит, ни как справиться, ни предотвратить. Мой код просто выдает сообщение об ошибке и выдает залог. Обычно, если я запускаю его снова, код работает нормально. Это хорошо для моего использования, но в конечном итоге предполагается, что этот код будет отдан непрограммистам для использования, и я хотел бы либо предотвратить ошибку, либо устранить ее внутренне, без участия указанного пользователя, не занимающегося программированием. Я заметил, что слышал, что пользователь должен был вызвать преждевременную отмену программы, нажав кнопку, и когда это происходит, мой код вызывает snd_pcm_drop, а затем snd_pcm_close. Если программа запускается до конца и воспроизводит все 7 секунд файла wav, то она завершает работу, вызывая snd_pcm_drain, а затем snd_pcm_close. Любая помощь или предложения будут с благодарностью. :)

...