Vous voudriez probablement utiliser l'exemple PCM audio dans une application avec une interface graphique, GUI. Dans ce cas on recommande d'utiliser deux partie, une partie audio et une partie GUI. Les deux partie peuvent alors communiquer par exemple via la mémoire partagée. Cela a aussi l'avantage que vous pouvez augmenter la priorité de la partie audio séparément de la priorité de la partie GUI.
La partie audio pourrait ressembler a ceci
while(shared_data->do_audio) { process_buffer(buf, bufsize); while ((pcm_return = snd_pcm_writei(pcm_handle, buf, bufsize)) < 0) { snd_pcm_prepare(pcm_handle); fprintf(stderr, "xrun !\n"); } }
Il n'est pas nécessaire d'utiliser le polling dans ce cas puisque snd_pcm_write bloquerait les frames qui veulent écrire au dispositif..