该参数的正确类型是什么?
这是给所有 ALSA 人的。我需要在这里进行健全性检查。我正在使用 alsa-lib api 来播放声音,我用来将数据写入驱动程序的函数是
snd_pcm_sframes_t snd_pcm_writei (snd_pcm_t* pcm,
const void* buffer,
snd_pcm_uframes_t size);
对于第三个参数,它应该是帧计数还是缓冲区大小(以字节为单位)?我之所以这么问,是因为我见过很多以字节为单位传递大小的示例。 文档。
This one is for all you ALSA guys. I need a sanity check here. I am using the the alsa-lib api to play sounds and the function that I am using to write the data to the driver is
snd_pcm_sframes_t snd_pcm_writei (snd_pcm_t* pcm,
const void* buffer,
snd_pcm_uframes_t size);
For the third parameter, should it be the frame count or the size of the buffer in bytes? I'm asking because I have seen numerous examples where the size in bytes is passed in. One example is included in the documentation.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据文档,它是帧的数量,而不是字节的数量。
在示例中,您链接到的值恰好相同,因为它使用 8 位样本和一个通道,并且一个通道 8 位数据的一帧是一个字节。
According to the documentation, it's the amount of frames, not bytes.
In the example you linked to the values just happen to be the same because it's using 8-bit samples and one channel, and one frame of one channel 8-bit data is one byte.