参考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
}
答案 0 :(得分:1)
您可以逐个元素地将数据复制到字节或Int16数组中,用于&#34; for&#34;环。与memset相比,Swift可以合理地优化这个循环,这样处理器数据缓存效果最终会占据性能。