Как создать CVPixelBuffer из необработанных данных YUV (YCbCr) NSData - PullRequest
0 голосов
/ 30 октября 2018

Я читаю канал yuv4mpeg2 из ffmpeg и у меня возникают проблемы при создании CVPixelBuffer из NSData, который я проанализировал из одного кадра.

Достоверно уверен, что я должен использовать CVPixelBufferCreateWithPlanarBytes ? Я не уверен, как вычислить ширину и высоту плоскости, и как передать в planeBaseAddresses. У меня просто есть один кадр в оболочке NSData. Вот то, что я пока собрал.

func createPixelBuffer(frameData: NSData) -> CVPixelBuffer? {
    let height = 1080
    let width = 1920
    let numberOfPlanes = 3
    var planeBaseAddresses: UnsafeMutableRawPointer?
    var planeWidths = [Int]()
    var planeHeights = [Int]()
    var planeBytesPerRows = [Int]()
    var pixelBuffer : CVPixelBuffer? = nil
    let result = CVPixelBufferCreateWithPlanarBytes(kCFAllocatorDefault,
                                                    width,
                                                    height,
                                                    kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
                                                    nil,
                                                    0,
                                                    numberOfPlanes,
                                                    &planeBaseAddresses,
                                                    &planeWidths,
                                                    &planeHeights,
                                                    &planeBytesPerRows,
                                                    nil,
                                                    nil,
                                                    nil,
                                                    &pixelBuffer)
    if result != kCVReturnSuccess {
        return nil
    }
    return pixelBuffer
}

Это не возвращает ошибку, но, очевидно, является неполным и не создает изображение.

Помощь с благодарностью. Пожалуйста, прокомментируйте, если вам нужен полный рабочий пример кода.

...