我正在尝试使用Apple的MixerHostAudio类来混合和播放用户指定的音频文件。
可以在此处找到类文件:http://developer.apple.com/library/ios/#samplecode/MixerHost/Listings/Classes_MixerHostAudio_h.html
为了让MixerHostAudio类播放用户指定的文件,我使用文件的NSURL实例化了该类。这对于第一次实例化非常有用,但是当我想通过释放旧的MixerHostAudio类来更改播放的音频文件并分配一个新的应用程序时,应用程序会在声音开始播放后以“EXC_BAD_ACCESS”秒崩溃。
在做了一些调试之后,我注意到inputRenderCallback发生了错误,soundStructPointerArray的AudioUnitSampleType(audioDataLeft和audioDataRight)是nil。
这是发生错误的代码的一部分:
for (UInt32 frameNumber = 0; frameNumber < inNumberFrames; ++frameNumber) {
outSamplesChannelLeft[frameNumber] = dataInLeft[sampleNumber];
if (isStereo) outSamplesChannelRight[frameNumber] = dataInRight[sampleNumber];
反正我是否在没有错误的情况下实例化MixerHostAudio的多个实例?
非常感谢任何帮助。
答案 0 :(得分:0)
听起来代码没有重置回调中的所有数据。我不熟悉那个源代码,但是你应该通过并确保正确处理所有内存分配并且没有过时的指针。特别是要查找当它们不应该存在的全局变量或静态变量,因为你说你在它崩溃之前实例化了第二个。