Cópia profunda de CMImageBuffer ou CVImageBuffer

Olá, Atualmente, estou trabalhando em um aplicativo que precisa capturar um vídeo e, ao mesmo tempo, deve conseguir quadros para combiná-los. O problema que estou tendo é que meus quadros são provenientes de:

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

cairá após a mistura de 10 a 12 quadros. Tentei misturar todos os quadros 10, mas ele ainda cairá após 10 a 12 quadros misturados.

Eu sei que devo copiar o CVImageBuffer para liberar o imageBuffer que obtive usando o seguinte:let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)

Eu também sei que

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

cria apenas cópias rasas e não ajuda a liberar a imagem original

Portanto, minha pergunta é: como posso criar uma cópia completa e profunda de umCMSmapleBuffer ouCVImageBuffer? Eu gostaria de 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

Mas a função é um pouco esmagadora e não sei de onde obter todos os atributos. Tenho certeza de que posso tirar muito proveito doCMSmapleBuffer.

Estou procurando uma solução há alguns dias. Se você precisar de mais contexto, não hesite em perguntar. Espero que alguém possa ajudar.

questionAnswers(0)

yourAnswerToTheQuestion