Erstelle CVPixelBuffer von YUV mit IOSurface

So bekomme ich rohe YUV-Daten in 3 separaten Arrays von einem Netzwerk-Callback (VoIP-App). Soweit ich weiß, können Sie mit @ keine IOSurface-gestützten Pixelpuffer erstelleCVPixelBufferCreateWithPlanarBytes gemäßHie

Wichtig: Sie können CVPixelBufferCreateWithBytes () oder CVPixelBufferCreateWithPlanarBytes () nicht mit kCVPixelBufferIOSurfacePropertiesKey verwenden. Das Aufrufen von CVPixelBufferCreateWithBytes () oder CVPixelBufferCreateWithPlanarBytes () führt zu CVPixelBuffers, die nicht IOSurface-backed @ sin

So musst du es also mit @ erstellCVPixelBufferCreate, aber wie überträgt man die Daten vom Anruf zurück zumCVPixelBufferRef dass Sie erstellen?

- (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);

Ich bin mir nicht sicher, was ich danach hier tun soll? Schließlich möchte ich daraus ein CIImage machen, das ich dann mit GLKView zum Rendern des Videos verwenden kann. Wie "setzen" die Leute die Daten in die Puffer, wenn Sie sie erstellen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage