在使用以下API的音频应用程序中 C ++ 类CARingBuffer的 Swift 替换可能是好的
CARingBuffer *mBuffer = new CARingBuffer()
mBuffer->Allocate(...)
mBuffer->Store(...)
mBuffer->Fetch(...)
mBuffer->GetTimeBounds(...)
谢谢!
更新:对纯Swift实施感兴趣(没有C / C ++桥接)。
Udpate 2 :允许Swift实施使用低级C API,例如memcpy
,OSAtomicCompareAndSwapLongBarrier
等。
更新3 :让我们假设发送到Whole Module Optimization
的链接器问题是暂时的,将在较新版本的swift
工具链中解决。
更新4 :在实施CARingBuffer in Swift并运行性能测试(C ++和Swift)后,我得到了一些数据:
2 000 000个周期(2个通道,44100 Hz,每帧512个样本,缓冲容量4096帧)
20 000 000次循环
200 000 000次循环