我已经编写了自己的音频库。(傻,我知道,但我喜欢它。)现在,我用它来播放 iOS 上 iPod 库中的立体声文件。它运行良好,只是有时调用 ExtAudioFileRead() 需要超过 23 毫秒。由于我的 AudioUnits 输出设置以 44.1KHz 播放音频,并且每次回调要求 1024 帧。我的代码 + ExtAudioFileRead() 响应时间不得超过 23 毫秒。
我很惊讶 ExtAudioFileRead() 这么慢。我正在做的事情似乎很正常。我在想一定有一些我没有做的未记录的配置魔法。这是我的相关配置代码:
ExtAudioFileRef _extAudioFileRef;
OSStatus result;
result = ::ExtAudioFileOpenURL((__bridge CFURLRef)_url, &_extAudioFileRef);
AudioStreamBasicDescription format;
format.mBitsPerChannel = 8 * sizeof(float);
format.mBytesPerFrame = sizeof(float);
format.mBytesPerPacket = sizeof(float);
format.mChannelsPerFrame = channelCount;
format.mFormatFlags = kAudioFormatFlagIsFloat|kAudioFormatFlagIsNonInterleaved;
format.mFormatID = kAudioFormatLinearPCM;
format.mFramesPerPacket = 1;
format.mSampleRate = framesPerSecond;
result = ::ExtAudioFileSetProperty(_extAudioFileRef,
kExtAudioFileProperty_ClientDataFormat,
sizeof(format),
&format);
我没有设置 _extAudioFileRef 的任何其他属性。
我已经追查到这件事了。我已经在对 ExtAudioFileRead() 的调用中进行了时间测量,所以我知道不是我的代码减慢了这个过程。应该是配置问题吧?
非常感谢您的帮助甚至猜测!
干杯,克里斯托弗