Cree CVPixelBuffer desde YUV con IOSurface respaldado

Por lo tanto, obtengo datos YUV sin procesar en 3 matrices separadas de una devolución de llamada de red (aplicación voip). Por lo que entiendo, no puede crear búferes de píxeles respaldados por IOSurface conCVPixelBufferCreateWithPlanarBytes de acuerdo aaquí

Importante: No puede usar CVPixelBufferCreateWithBytes () o CVPixelBufferCreateWithPlanarBytes () con kCVPixelBufferIOSurfacePropertiesKey. Llamar a CVPixelBufferCreateWithBytes () o CVPixelBufferCreateWithPlanarBytes () dará como resultado CVPixelBuffers que no están respaldados por IOSurface

Así que tienes que crearlo conCVPixelBufferCreate, pero ¿cómo transfiere los datos de la llamada aCVPixelBufferRef que creas?

- (void)videoCallBack(uint8_t *yPlane, uint8_t *uPlane, uint8_t *vPlane, size_t width, size_t height, size_t stride yStride,
                      size_t uStride, size_t vStride)
    NSDictionary *pixelAttributes = @{(id)kCVPixelBufferIOSurfacePropertiesKey : @{}};
    CVPixelBufferRef pixelBuffer = NULL;
    CVReturn result = CVPixelBufferCreate(kCFAllocatorDefault,
                                          width,
                                          height,
                                          kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
                                          (__bridge CFDictionaryRef)(pixelAttributes),
                                          &pixelBuffer);

No estoy seguro de qué hacer después aquí. Eventualmente quiero convertir esto en un CIImage que luego puedo usar mi GLKView para renderizar el video. ¿Cómo la gente "pone" los datos en los buffers desde que los crea?

Respuestas a la pregunta(2)

Su respuesta a la pregunta