Я читаю канал 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
}
Это не возвращает ошибку, но, очевидно, является неполным и не создает изображение.
Помощь с благодарностью. Пожалуйста, прокомментируйте, если вам нужен полный рабочий пример кода.