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

标签 c++ c linux alsa

用ALSA播放音频,调用snd__pcm__writei后,是立即释放sample buffer还是需要等声音播放完再释放sample buffer?

例如:

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)

最佳答案

找出答案的最简单方法是从缓冲区末尾开始向后写入,看看是否影响音频播放。如果这样做,那么您肯定无法释放缓冲区。如果这没有什么区别,那么您可以安全地释放缓冲区,因为声卡不会从该特定内存块读取数据。

关于c++ - 使用 ALSA 的函数 snd_pcm_writei 我可以立即释放样本缓冲区吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315250/

相关文章:

c - C语言预处理器的复杂语法

java - 使用 java 类路径运行脚本

c - about/proc读写函数

c++ - 比较类的两个实例中的变量

c++ - boost.python 公开返回 vector<MyClass> 的函数

c - SOCK_STREAM 上的 Http 服务器 - 何时结束连接?

linux - 将域列表添加到 apache 虚拟主机的 shell 脚本

c++ - const 运算符与 C++ 中的方法一起使用时意味着什么?

c++ - 为什么不能显式调用构造函数而析构函数可以?

c - 使用系统函数 read() 和 write() 时 Linux 在终端中输出的机制