Crie CVPixelBuffer a partir de YUV com IOSurface suportado
Portanto, estou obtendo dados YUV brutos em 3 matrizes separadas de um retorno de chamada de rede (aplicativo de voip). Pelo que entendi, você não pode criar buffers de pixel suportados pelo IOSurface comCVPixelBufferCreateWithPlanarBytes
de acordo comaqui
Importante: Você não pode usar CVPixelBufferCreateWithBytes () ou CVPixelBufferCreateWithPlanarBytes () com kCVPixelBufferIOSurfacePropertiesKey. Chamar CVPixelBufferCreateWithBytes () ou CVPixelBufferCreateWithPlanarBytes () resultará em CVPixelBuffers que não são suportados pelo IOSurface
Portanto, você deve criá-lo comCVPixelBufferCreate
, mas como você transfere os dados da chamada de volta para oCVPixelBufferRef
que você criou?
- (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);
Não tenho certeza do que fazer depois aqui? Eventualmente, quero transformar isso em um CIImage, para que eu possa usar meu GLKView para renderizar o vídeo. Como as pessoas "colocam" os dados nos buffers a partir de quando você os cria?