¿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.