AudioQueue捕获并返回不同的缓冲区大小

时间:2011-09-26 18:55:16

标签: iphone c audioqueue

我有一个基于AudioQueue的应用程序几乎完美地工作。然而,我遇到了一个问题。当我调用AudioQueueAllocateBuffer时,我特意请求缓冲区大小为512(因为我正在对数据执行FFT)。但是,当回调触发时,我发现有时我会得到小于512的缓冲区大小。

这令人愤怒。我唯一的解决方案是设置某种内部缓冲输入数据以消除这些问题?为什么我要为分配缓冲区指定一个值,然后iPhone会返回不同数量的样本?

任何帮助都会非常感激,因为我要发疯了。

干杯!

的奥斯卡

1 个答案:

答案 0 :(得分:2)

您的解决方案是设置自己的内部缓冲输入音频数据,直到您缓冲了所需的数据量。

您分配的缓冲区大小表示可以填充该缓冲区的最大数据量,而不是最小值。 Audio Queue API基于其他iOS音频API,可能会根据许多内容(底层API正在做什么,音频会话或其他应用程序请求的采样率,背景状态,操作系统版本,不同设备型号上的不同底层硬件等。)即使最低级别的公共音频API(RemoteIO)也会改变它的返回缓冲区大小,具体取决于。