2

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

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

任何帮助将不胜感激,因为我快要发疯了。

干杯!

奥斯卡

4

1 回答 1

2

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

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

于 2011-09-26T20:12:18.653 回答