Cree una copy de CMSampleBuffer en Swift 2.0

Esto se ha preguntado antes, pero algo debe haber cambiado en Swift desde que se le preguntó. Estoy intentando almacenar objects CMSampleBuffer devueltos desde una AVCaptureSession para ser procesados ​​más tarde. Después de experimentar, descubrí que AVCaptureSession debe reutilizar sus references CMSampleBuffer . Cuando bash mantener más de 15, la session se bloquea. Entonces pensé que haría copys de los búferes de muestra. Pero no puedo hacer que funcione. Esto es lo que he escrito:

 var allocator: Unmanaged<CFAllocator>! = CFAllocatorGetDefault() var bufferCopy: UnsafeMutablePointer<CMSampleBuffer?> let err = CMSampleBufferCreateCopy(allocator.takeRetainedValue(), sampleBuffer, bufferCopy) if err == noErr { bufferArray.append(bufferCopy.memory!) } else { NSLog("Failed to copy buffer. Error: \(err)") } 

Esto no se comstackrá porque dice que la Variable 'bufferCopy' used before being initialized . He visto muchos ejemplos y comstackrán y no funcionarán o no comstackrán.

¿Alguien ve lo que estoy haciendo mal aquí?

    Literalmente, está intentando utilizar la variable bufferCopy antes de que se inicialice.

    Has declarado un tipo para ello, pero no has asignado la memory a la que apunta.

    En su lugar, debería crear CMSampleBuffers utilizando la siguiente llamada https://developer.apple.com/library/tvos/documentation/CoreMedia/Reference/CMSampleBuffer/index.html#//apple_ref/c/func/CMSampleBufferCreate

    Debería poder copyr el búfer en este momento (siempre que el formatting del búfer coincida con el que está copyndo).

    ¿Puedes simplemente pasar un CMSampleBuffer? variable (que, como opcional, se inicializa implícitamente con nil ) como argumento inout con & :

     var bufferCopy : CMSampleBuffer? let err = CMSampleBufferCreateCopy(kCFAllocatorDefault, buffer, &bufferCopy) if err == noErr { // ... }