Comment utiliser ALSA est snd_pcm_writei()?

Quelqu'un peut m'expliquer comment snd_pcm_writei

snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer,
                                 snd_pcm_uframes_t size)

fonctionne?

Je l'ai utilisé comme:

for (int i = 0; i < 1; i++) {
   f = snd_pcm_writei(handle, buffer, frames);

   ...
}

L'intégralité du code source à http://pastebin.com/m2f28b578

Est-ce à dire, que je ne devrais pas donner snd_pcm_writei() le nombre de
toutes les images de buffer, mais seulement

sample_rate * temps de latence = frames

?

Donc, si j'ai par exemple:
sample_rate = 44100
la latence = 0.5 [s]
all_frames = 100000

Le nombre d'images que je devrais donner à snd_pcm_writei() serait

sample_rate * temps de latence = images
44100*0.5 = 22050

et le nombre d'itérations de la boucle for doit être?:

(int) 100000/22050 = 4; avec des cadres=22050

et un de plus, mais seulement avec

100000 mod 22050 = 11800

cadres?

Est que la façon dont il fonctionne?

Louise

http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html#gf13067c0ebde29118ca05af76e5b17a9

OriginalL'auteur Louise | 2010-02-01