2016-03-27 37 views
3

简短的问题是:在CVPixelBuffer中寻址像素值的公式是什么?如何正确解决CVPixelBuffer中的像素问题?

我试图在平面字节数组中转换CVPixelBuffer并注意到一些奇怪的事情:CVPixelBufferCMSampleBuffer获得。它的宽度和高度是852x640像素。总共545280像素,其将需要2181120字节,考虑4字节/像素。

现在第一个奇怪的是,相同的CVPixelBuffer返回3456每行字节,这是足够的空间864像素。那些额外的12像素来自哪里?如果最终图像中的一行仅为852像素宽,但实际上864像素在CVPixelBuffer的一行中,我怎么知道哪些字节需要被复制?或者哪些字节未被使用?顺便说一下,他们没有使用?

另一件事是报告的数据大小CVPixelBuffers,这是2211848字节。现在,如果我们将每行3456字节与640行相乘,我们将以2211840字节结束。再次,我们剩下的字节数为8。这些8字节有什么问题?他们没有使用?他们到底了吗?

欢迎提供任何有关此事的建议, 谢谢。

回答

2

在内部,您的CMSampleBuffer将每行填充到16个字节的倍数,以便它可以有效地将处理器的内部128位宽寄存器的数据吊起。这是我的猜测。如果你在(0,0)到(851,639)的范围内使用它的rowbytes参数和(x,y)来访问像素数据,你应该永远不会有问题。