2015-10-14 100 views
1

指的Using AudioBufferList with Swift與斯威夫特再次

我發現這裏的以下解決方案堆棧溢出播放一些聲音的音頻單元。我的問題在於,我不能像正弦波數據那樣將實際數據放入緩衝區。我試過用memcpy而不是memset,但是這個東西讓人很疲憊。

那麼有人會澄清我將如何將實際數據放到緩衝區中,還是應該抓取一本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

您可以在「for」循環中將數據逐個元素地複製到字節或Int16數組中。與memset相比,Swift可能會相當好地優化這個循環,因此處理器數據緩存效果最終會佔據主導地位。