Как мне вызвать CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer?
Я пытаюсь понять, как это назватьAVFoundation
функция в Swift. Я потратил кучу времени, возясь с объявлениями и синтаксисом, и получил это далеко. Компилятор в основном доволен, но у меня остался последний вопрос.
public func captureOutput(
captureOutput: AVCaptureOutput!,
didOutputSampleBuffer sampleBuffer: CMSampleBuffer!,
fromConnection connection: AVCaptureConnection!
) {
let samplesInBuffer = CMSampleBufferGetNumSamples(sampleBuffer)
var audioBufferList: AudioBufferList
var buffer: Unmanaged<CMBlockBuffer>? = nil
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(
sampleBuffer,
nil,
&audioBufferList,
UInt(sizeof(audioBufferList.dynamicType)),
nil,
nil,
UInt32(kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment),
&buffer
)
// do stuff
}
Компилятор жалуется на 3-й и 4-й аргументы:
Адрес переменной 'audioBufferList', взятой до ее инициализации
а также
Переменная 'audioBufferList', используемая до инициализации
Так что мне здесь делать?
Я работаю надэтот ответ StackOverflow но это Objective-C. Я пытаюсь перевести его на Свифт, но сталкиваюсь с этой проблемой.
Или есть ли лучший подход? Мне нужно читать данные из буфера, по одному сэмплу за раз, поэтому я в основном пытаюсь получить массив сэмплов, который я могу перебрать.