¿Cómo llamo a CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer?

Estoy tratando de descubrir cómo llamar a estoAVFoundation funcionar en Swift. Pasé un montón de tiempo jugando con declaraciones y sintaxis, y llegué hasta aquí. El compilador es mayormente feliz, pero me queda un ú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
}

El compilador se queja por los argumentos tercero y cuarto:

Dirección de la variable 'audioBufferList' tomada antes de que se inicialice

y

Variable 'audioBufferList' utilizada antes de ser inicializada

Entonces, ¿qué se supone que debo hacer aquí?

Estoy trabajando fuera deesta respuesta de StackOverflow pero es Objective-C. Estoy tratando de traducirlo a Swift, pero me encuentro con este problema.

¿O hay posiblemente un mejor enfoque? Necesito leer los datos del búfer, una muestra a la vez, así que básicamente estoy tratando de obtener una matriz de las muestras sobre las que puedo iterar.

Respuestas a la pregunta(5)

Su respuesta a la pregunta