再次使用AudioBufferList和Swift

时间:2015-10-14 15:36:56

标签: swift core-audio audiounit unsafe-pointers

参考Using AudioBufferList with Swift

我在Stack Overflow上找到了以下解决方案,用于播放音频单元的声音。我的问题是我无法将实际数据放入我的缓冲区,如sin wave数据。我使用memcpy代替memset进行了尝试,但此UnsafePointer内容非常耗费精力。

有人要澄清我如何将实际数据放到我的缓冲区中,还是应该抓住Objective-C书并重新做一遍?

func renderCallback(ioData: UnsafeMutablePointer<AudioBufferList>) -> OSStatus 
{
    let abl = UnsafeMutableAudioBufferListPointer(ioData)
    for buffer in abl {
        memset(buffer.mData, 0, Int(buffer.mDataByteSize))
    }
    return noErr
}

1 个答案:

答案 0 :(得分:1)

您可以逐个元素地将数据复制到字节或Int16数组中,用于&#34; for&#34;环。与memset相比,Swift可以合理地优化这个循环,这样处理器数据缓存效果最终会占据性能。