如何修改AudioUnit Buffer的大小?

How to modify the size of AudioUnit Buffer?

我正在开发一个录音的应用程序,但我要求输入缓冲区的大小应为882 字节。我知道我可以像 this picture 一样修改 buffList 的 mDataByteSize。 但是只能修改为2的幂。当我试图修改为882时,它警告我"AudioUnitRender error:-50"。

我没有办法,希望有人能帮助我。

您不能在 Audio Unit 录音回调 bufferList 中要求特定的输入大小。事实上,音频单元 API 被允许在 运行 时间更改每个音频缓冲区的样本数。因此,您的应用必须支持与请求的帧数不同的帧数,每个回调。

相反,您的应用程序应将样本保存在另一个临时 FIFO 缓冲区中,然后在该临时 FIFO 缓冲区变满时删除所需块大小的一些样本。通常,循环缓冲区用于存储临时量,直到它被填充到您需要的大小或更大为止。他们可以精确地提取 882 个或您需要的任何数量的样本。