对于我的iPhone应用程序,我正在尝试使用Apple的MixerHostAudio class来混合和播放用户指定的音频文件。

为了使MixerHostAudio类播放用户指定的文件,我使用文件的NSURL实例化了该类。这对于第一个实例化非常有用,但是,当我想通过释放旧的MixerHostAudio类并分配一个新的音频文件来更改播放的音频文件时,实例化后几秒钟EXC_BAD_ACCESS会使应用程序崩溃。

进行一些调试之后,我注意到该错误发生在inputRenderCallback中,其中AudioUnitSampleTypeaudioDataLeft(audioDataRightsoundStructPointerArray)为nil。

这是发生错误的代码的一部分:

for (UInt32 frameNumber = 0; frameNumber < inNumberFrames; ++frameNumber) {
    outSamplesChannelLeft[frameNumber]                 = dataInLeft[sampleNumber];
    if (isStereo) outSamplesChannelRight[frameNumber]  = dataInRight[sampleNumber];

任何帮助是极大的赞赏!

最佳答案

在释放stopAUGraph实例之前,您是否调用过MixerHostAudio?在我看来,dealloc方法不会自动将其停止。那么释放/释放各种内存位置后将调用回调,这将导致严重的访问崩溃。

关于iphone - 使用Apple的MixerHostAudio示例类时遇到问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4170922/

10-12 04:22