教你看懂kCVPixelFormatType类型

iOS系统定义了很多很多视频格式,让人眼花缭乱。不过一旦熟悉了它的命名规则,其实一眼就能看明白。

kCVPixelFormatType_{长度|序列}{颜色空间}{Planar|BiPlanar}{VideoRange|FullRange}

Planar: 平面;BiPlanar:双平面
平面/双平面主要应用在yuv上。uv分开存储的为Planar,反之是BiPlanar。所以,kCVPixelFormatType_420YpCbCr8PlanarFullRange是420p,kCVPixelFormatType_420YpCbCr8BiPlanarFullRange是nv12.

VideoRange和FullRange的区别在于数值的范围,FullRange比VideoRange大一些,颜色也更丰富一些。
如果没有指定颜色范围,默认都是FullRange。但有一个除外:kCVPixelFormatType_420YpCbCr8Planar。因为有一个kCVPixelFormatType_420YpCbCr8PlanarFullRange定义,所以kCVPixelFormatType_420YpCbCr8Planar理论上应该是VideoRange (参考链接)

颜色空间对应的就是它在内存中的顺序。比如kCVPixelFormatType_32BGRA,内存中的顺序是 B G R A B G R A...。
有一些特别的,比如kCVPixelFormatType_16BE555,这里需要用BE或LE指定字节顺序。

有的颜色空间后面还带有一个数字,用于表示bit长度。

以上都是经验方法,最准确的还是去看文档 :)。

你可能感兴趣的:(教你看懂kCVPixelFormatType类型)