2016-12-23 3 views
2

Функции ALSA snd_pcm_avail и snd_pcm_avail_update очень похожи. Большинство примеров, похоже, используют snd_pcm_avail_update. Когда следует использовать вместо этого snd_pcm_avail?Когда использовать snd_pcm_avail вместо snd_pcm_avail_update?

В моей тестовой программе, похоже, не имеет значения, какую функцию я использую. В чем разница?

+0

Как насчет [документации] (http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html#ga577b4d51e08d94930a05bbe73291ed2a)? –

+0

Ну, я прочитал документацию, но мне все еще не ясно, когда использовать эту функцию. Может быть, мне не хватает фона для понимания предоставленной информации, но я нахожу ее очень кратким. Извините, если это очевидно. –

+0

[test/pcm.c] (http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html) использует только snd_pcm_avail_update независимо от того, использует ли он poll()/select() или нет. –

ответ

3

snd_pcm_avail_update() не переходит в ядро, чтобы узнать последний статус, поэтому информация может быть устаревшей. Это просто оптимизация, которая полезна при использовании непосредственно после вызова, который уже обновил статус, например poll() или snd_pcm_status().

Смежные вопросы