0

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

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

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 相关的错误 - 它只会让我发出“缓冲区”而不是“缓冲区 [i]”这对我来说没有用,因为它只是将整个缓冲区一次发送到声音驱动程序,导致噪音我怎么能解决这个问题???谢谢你的帮助

4

2 回答 2

0

您应该使用&buffer[i]而不是buffer[i]然后传递正确大小的数据。无论如何定义缓冲区

于 2013-06-06T13:30:32.947 回答
0

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

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

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

于 2013-06-06T13:26:15.657 回答