Como chamo CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer?

Estou tentando descobrir como chamar issoAVFoundation função no Swift. Passei muito tempo brincando com declarações e sintaxe, e cheguei até aqui. O compilador está mais feliz, mas fiquei com um último dilema.

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_Assure,16ByteAlignment),
        &buffer
    )

    // do stuff
}

O compilador reclama dos terceiro e quarto argumentos:

Endereço da variável 'audioBufferList' obtida antes de ser inicializada

e

Variável 'audioBufferList' usada antes de ser inicializada

Então, o que devo fazer aqui?

Estou trabalhando fora deesta resposta StackOverflow mas é Objective-C. Estou tentando traduzi-lo para o Swift, mas me deparo com esse problema.

Ou existe uma abordagem melhor? Eu preciso ler os dados do buffer, uma amostra de cada vez, então estou basicamente tentando obter uma matriz das amostras nas quais posso iterar.

questionAnswers(5)

yourAnswerToTheQuestion