Copia profunda de CMImageBuffer o CVImageBuffer

Hola, actualmente estoy trabajando en una aplicación que necesita capturar un video y, al mismo tiempo, debería poder tomar fotogramas para combinarlos. El problema que tengo es que mis cuadros provienen de:

func captureOutput(
     captureOutput: AVCaptureOutput!,
     didOutputSampleBuffer sampleBuffer:
     CMSampleBuffer!,
     fromConnection connection: AVCaptureConnection!
)

caerá después de mezclar unos 10-12 cuadros. Traté de mezclar cada décimo cuadro, pero seguirá bajando después de 10-12 cuadros mezclados.

Sé que debo copiar el CVImageBuffer para liberar el imageBuffer que obtuve usando lo siguiente:let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)

Yo tambien se que

func CMSampleBufferCreateCopy(
     _ allocator: CFAllocator?,
     _ sbuf: CMSampleBuffer,
     _ sbufCopyOut: UnsafeMutablePointer
) -> OSStatus

solo crea copias superficiales y no ayudará a liberar la imagen original

Entonces mi pregunta es: ¿Cómo puedo crear una copia profunda completa de unCMSmapleBuffer oCVImageBuffer? Me gustaría usar:

func CMSampleBufferCreate(
     _ allocator: CFAllocator?,
     _ dataBuffer: CMBlockBuffer?,
     _ dataReady: Bool,
     _ makeDataReadyCallback: CMSampleBufferMakeDataReadyCallback?,
     _ makeDataReadyRefcon: UnsafeMutablePointer,
     _ formatDescription: CMFormatDescription?,
     _ numSamples: CMItemCount,
     _ numSampleTimingEntries: CMItemCount,
     _ sampleTimingArray: UnsafePointer,
     _ numSampleSizeEntries: CMItemCount,
     _ sampleSizeArray: UnsafePointer,
     _ sBufOut: UnsafeMutablePointer
) -> OSStatus

Pero la función es un poco abrumadora y no sé de dónde obtener todos los atributos. Estoy seguro de que puedo tomar mucho de lo dadoCMSmapleBuffer.

He estado buscando una solución durante un par de días. Si necesita más contexto, no dude en preguntar. Espero que alguien pueda ayudar.

Respuestas a la pregunta(0)

Su respuesta a la pregunta