YUV原理和格式详解( 三 )


Semi- 半平面格式
半平面格式具有两个平面而不是三个平面,一个平面存储亮度(Y)分量,另一个平面存储两个色度(UV)分量 。有时也将它们称为双平面格式() 。
NV12
NV12 属于格式 。两个平面,分别存储 Y 分量 和 UV 分量 。其中 UV 分量共用一个平面并且以 U, V, U, V 的顺序交错排列 。每四个 Y 分量共享一组 UV 分量 。
UV 平面的 , width 与 Y 平面一样长,但仅为 Y 平面的一半 。因此一个像素 12 bits,内存排列如下图所示:
从图中可看出,UV 平面的每行字节数()与 Y 平面一致,高()是 Y 平面的一半 。
NV12 是 iOS 相机()可直接输出的两种视频帧格式之一,另外一种是 (2BGRA) 。
NV21
NV21 属于,与 NV12 几乎一致,区别是 UV 平面中 U 与 V 的排列顺序颠倒,以 V, U, V, U 的顺序交错排列,内存排列如图所示:
NV21 是相机()默认的输出格式 。
打包格式
打包格式通常只有一个平面,所有亮度(Y)和色度(UV)数据都交织在一起 。有点类似于 RGB 格式,只是使用了不同的色彩空间 。
打包格式在网络摄像头中较为常见 。硬件设备使用多平面格式效率较低,因为每个像素需要多次内存访问 。而打包格式由于仅一个平面,访问内存的开销较小 。
AYUV:4:4:4
AYUV 是打包格式,其中每个像素编码为四个连续字节,每个像素在内存中按照 V, U, Y, A 的顺序排列(A 指 alpha 通道),如下图所示:
YUYV (V422 / YUY2 / YUNV)4:2:2
YUYV 通常也称作 V422、YUY2、YUNV
YUY2 是打包格式,其中两个像素共用一组 UV 分量,内存中按照 Y U Y V 的顺序排列,如下图所示:
UYVY (Y422 / UYNV)4:2:2
UYVY 通常也称作 Y422、UYNV
UYVY 与 YUYV 类似,只是亮度(Y)分量与色度(UV)分量排列顺序颠倒,如下图所示:

下图更直观的展示了三种方式中YUV三种分量的关系: