我有一个基于AudioQueue的应用程序几乎完美地工作。然而,我遇到了一个问题。当我调用AudioQueueAllocateBuffer时,我特别请求缓冲区大小为512(因为我正在对数据执行FFT)。然而,当回调触发时,我发现我时不时地得到小于512的缓冲区大小。
真让人恼火。我唯一的解决方案是设置某种传入数据的内部缓冲来解决这些问题吗?为什么我指定一个值分配缓冲区,然后iPhone返回我不同数量的样本?
任何帮助都将非常感激,因为我快要疯了。
干杯!
奥斯卡你的解决方案是为传入的音频数据设置自己的内部缓冲,直到你缓冲了所需的数据量。
分配的缓冲区大小表示可以填充该缓冲区的最大数据量,而不是最小数据量。Audio Queue API基于其他iOS音频API,并且可能会根据许多事情(底层API正在做什么,其他应用请求的音频会话或采样率,后台状态,操作系统版本,不同设备型号上的不同底层硬件等)改变其行为。即使是最低级别的公共音频API (RemoteIO)也会根据情况改变其返回的缓冲区大小。