我从一个网络回调(voip应用程序)中获取了3个分离的YUV数据数组。据我所知,根据此处(链接),您不能使用
CVPixelBufferCreateWithPlanarBytes
创建基于IOSurface支持的像素缓冲区。
因此,您必须使用重要提示:您无法在使用kCVPixelBufferIOSurfacePropertiesKey时使用CVPixelBufferCreateWithBytes()或CVPixelBufferCreateWithPlanarBytes()。调用CVPixelBufferCreateWithBytes()或CVPixelBufferCreateWithPlanarBytes()将导致不支持IOSurface的CVPixelBuffers。
CVPixelBufferCreate
进行创建,但是如何将回调数据传输到您创建的CVPixelBufferRef
呢?- (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);
我不确定接下来该怎么做?最终我想将其转换为CIImage,然后使用GLKView渲染视频。人们如何将数据“放入”从创建它时的缓冲区中?