使用ALSA的函数snd_pcm_writei我可以立即释放样本缓冲区吗?

时间:2009-08-22 05:48:15

标签: c++ c linux alsa

使用ALSA播放音频,在调用 snd__pcm__writei 后,我是否可以立即释放声音样本缓冲区,还是需要等到声音播放完毕才能释放样本缓冲区? / p>

例如:

unsigned short *buffer;

buffer = malloc(size of sample to play);
...load data into buffer...
snd_pcm_writei (playback_handle, buffer, size of sample)
free(buffer)

1 个答案:

答案 0 :(得分:0)

最简单的方法是从缓冲区的末尾开始向后写,看看是否影响音频播放。如果你这样做,你肯定无法释放缓冲区。如果它没有任何区别,那么你可以安全地释放缓冲区,因为声卡没有从那个特定的内存块中读取。