简短的问题是:解决CVPixelBuffer
中像素值的公式是什么?
我正在尝试在平面字节数组中转换CVPixelBuffer
并注意到一些奇怪的事情:CVPixelBuffer
是从CMSampleBuffer
获得的。它的宽度和高度为852x640
像素。总和545280
像素,这需要2181120
个字节,每个像素考虑4
个字节。
现在第一个奇怪的是,相同的CVPixelBuffer
每行返回3456
个字节,这对864
像素来说足够了。这些额外的12
像素来自哪里?如果最终图片中的一行只有852
像素宽,但864
行中实际有CVPixelBuffer
像素,我如何知道哪些字节需要复制?或者哪些字节未使用?顺便问一下,他们没用吗?
另一件事是报告的数据大小CVPixelBuffers
,即2211848
个字节。现在,如果我们将每行的3456
字节与640
行相乘,我们最终会得到2211840
个字节。所以,我们再留下8
个额外字节。那些8
字节的问题是什么?他们没用吗?他们到底了吗?
任何有关此问题的建议都值得欢迎, 谢谢。
答案 0 :(得分:2)
在内部,您的CMSampleBuffer将每行填充为16个字节的倍数,以便它可以使用处理器的内部128位宽寄存器有效地吊起数据。这是我的猜测。如果使用其rowbytes参数和(x,y)在(0,0)到(851,639)范围内访问像素数据,则永远不会有问题。