CVPixelBufferGetWidth(pixelbuffer)
和CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)
和CVPixelBufferGetHeight(pixelbuffer)
和CVPixelBufferGetHeightOfPlane(pixelbuffer, 0)
之间有什么区别。
我搜索维基,它说:
As with most Y′UV formats, there are as many Y′ values as there are pixels.
它并不表示y的值对于所有格式都等于图像宽度。
因此,如果
CVPixelBufferGetWidth(pixelbuffer) == CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)
和
CVPixelBufferGetHeight(pixelbuffer) == CVPixelBufferGetHeightOfPlane(pixelbuffer, 0)
最佳答案
并非所有像素缓冲区都是平面的(也就是说,像YUV缓冲区一样,包含多个数据平面)。在决定使用哪个函数查询宽度/高度之前,请先检查CVPixelBufferIsPlanar
是否在您的手中。 (当然,如果您从始终是平面的源中获取缓冲区,则可以放心地跳过该检查。)CVPixelBufferGetWidthOfPlane
的文档请注意,传递非平面缓冲区时,它始终返回零。在那种情况下,返回值(对于平面0)不希望等于CVPixelBufferGetWidth
。