使用Apple的MixerHostAudio类播放音频文件时出现问题

时间:2010-11-19 06:52:03

标签: iphone ios core-audio avaudioplayer

我正在尝试使用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的多个实例?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

听起来代码没有重置回调中的所有数据。我不熟悉那个源代码,但是你应该通过并确保正确处理所有内存分配并且没有过时的指针。特别是要查找当它们不应该存在的全局变量或静态变量,因为你说你在它崩溃之前实例化了第二个。