我对 remoteIO 音频单元有以下渲染回调。简单地访问参数的第 0 个元素会ioData
导致崩溃。很简单地说,这可以在没有耳机插孔连接的情况下使用,但是一旦我将插孔插入我的 iphone6+,访问缓冲区时就会出现错误的访问错误。
如果我在应用程序运行时插入它,它会崩溃。如果我先插入它,然后构建并运行应用程序,它仍然会崩溃。我检查了是否inNumberFrames
可能基于线路输出连接发生变化,但它始终保持在 512 帧。
OSStatus playbackCallback(void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData) {
float * output = (float*)ioData->mBuffers[0].mData;
output[0] = 1;
return noErr;
}
显然,AVAudioSession
即使在应用程序启动之前插入耳机,也会调用路由更改回调。我尝试的其中一件事是将 remoteIO 启动延迟到那时。但是,以下代码会产生错误:
- (void)handleRouteChange:(NSNotification *)notification {
OSStatus err = AudioOutputUnitStart(remoteIOUnit);
}
错误:
错误:应该分配 (-10849)