AudioBufferList размещают в Swift
Я борюсь с этим API и синтаксисом в Swift
audioBufferList = AudioBufferList(mNumberBuffers: 2, mBuffers: (AudioBuffer))
Я не знаю, что (AudioBuffer) с () означает? Есть идеи и как мне это инициализировать? Это из заголовков:
public struct AudioBufferList {
public var mNumberBuffers: UInt32
public var mBuffers: (AudioBuffer) // this is a variable length array of mNumberBuffers elements
public init()
public init(mNumberBuffers: UInt32, mBuffers: (AudioBuffer))
}
1 ответ
Вот один из способов инициализации AudioBufferList с одним пустым массивом монобуфера, который вы можете передать вызовам Audio Unit, таким как AudioUnitRender(), который затем распределяет и заполняет буфер по мере необходимости:
var bufferList = AudioBufferList(
mNumberBuffers: 1,
mBuffers: AudioBuffer(
mNumberChannels: UInt32(1),
mDataByteSize: 1024,
mData: nil))
Решил проблему с помощью AVAudioPCMBuffer
класс следующим образом:
import AVFoundation
// noninterleaved stereo data
let processingFormat = AVAudioFormat(
commonFormat: .pcmFormatFloat32,
sampleRate: 44100,
channels: 2,
interleaved: false
)!
// this line also creates AudioBufferList instance.
let buffer = AVAudioPCMBuffer(
pcmFormat: processingFormat,
frameCapacity: 1024)!
// this line updates mDataByteSize properties
buffer.frameLength = 1024
let bufferList: UnsafePointer<AudioBufferList> = buffer.audioBufferList
print(bufferList.pointee) // Prints: AudioBufferList(mNumberBuffers: 2, mBuffers: __C.AudioBuffer(mNumberChannels: 1, mDataByteSize: 4096, mData: Optional(0x00007ff253840e00)))