1

参考使用 Swift的 AudioBufferList

我在 Stack Overflow 上找到了以下解决方案,用于使用音频单元播放一些声音。我的问题是我无法像正弦波数据一样将实际数据放入缓冲区。我尝试了它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
}
4

1 回答 1

1

您可以在“for”循环中将数据逐个元素复制到字节或 Int16 数组中。与 memset 相比,Swift 可能会相当好地优化这个循环,这样处理器数据缓存效果最终会主导性能。

于 2015-10-14T22:48:39.363 回答