我正在尝试从缓冲区流式传输值,这些值是由正弦波函数生成的

当我尝试将值发送给驱动程序时,我必须使用此功能

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


我的问题是我不了解const void * buffer

我设置了一个for循环来循环访问缓冲区中的值。然后我有以下尝试将缓冲区中的每个值发送到声音驱动程序

frames = snd_pcm_writei(handle, buffer[i], sizeof(buffer));


但是它给出了与const void有关的错误-它只会让我听起来是'buffer'而不是'buffer [i]'
这对我没有用,因为它只是将整个缓冲区立即发送到声音驱动程序,这会导致噪音
我该如何解决???
谢谢你的帮助

最佳答案

除非buffer是一个指针数组,否则buffer [i]不是指针。如果这是您真正想要的值,请使用(const void *)&buffer [i]-“ void类型的常量指针,它是缓冲区中索引0处的变量的地址”。

换句话说,编译器消息告诉您类型不匹配。

希望这有帮助,祝你好运。

07-24 18:52
查看更多