Как мне вызвать 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. Я пытаюсь перевести его на Свифт, но сталкиваюсь с этой проблемой.

Или есть ли лучший подход? Мне нужно читать данные из буфера, по одному сэмплу за раз, поэтому я в основном пытаюсь получить массив сэмплов, который я могу перебрать.

Ответы на вопрос(5)

Ваш ответ на вопрос