2015-10-14 3 views
1

отсылая к Using AudioBufferList with SwiftИспользование AudioBufferList с Swift еще раз

я нашел следующее решение здесь на переполнение стека для воспроизведения какой-то звук с аудиоустройства. Моя проблема здесь в том, что я не могу помещать фактические данные в свой буфер, например, данные волны sin. Я попробовал это с 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

Вы можете скопировать данные в массив байтов или Int16 по элементам в цикле «для». Swift может оптимизировать этот цикл достаточно хорошо по сравнению с memset, так что эффекты кэша данных процессора становятся доминирующими в производительности.