【发布时间】:2011-01-11 23:04:04
【问题描述】:
谁能解释一下snd_pcm_writei
snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer,
snd_pcm_uframes_t size)
有效吗?
我是这样使用的:
for (int i = 0; i < 1; i++) {
f = snd_pcm_writei(handle, buffer, frames);
...
}
完整源代码http://pastebin.com/m2f28b578
这是否意味着,我不应该给snd_pcm_writei() 的数量
buffer 中的所有帧,但只有
sample_rate * 延迟 = frames
?
所以如果我例如有: 采样率 = 44100 延迟 = 0.5 [s] all_frames = 100000
我应该给snd_pcm_writei() 的帧数是
sample_rate * 延迟 = 帧数 44100*0.5 = 22050
for循环的迭代次数应该是多少?:
(int) 100000/22050 = 4;帧数=22050
还有一个额外的,但仅限于
100000 模 22050 = 11800
帧?
它是这样工作的吗?
路易丝
http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html#gf13067c0ebde29118ca05af76e5b17a9
【问题讨论】: