【发布时间】:2019-07-09 17:21:29
【问题描述】:
我完全了解问题中描述的 NV12 格式的大小
现在我从两个来源阅读有关以这种格式存储 UV 平面的信息: 一个是https://msdn.microsoft.com/en-us/library/windows/desktop/dd206750(v=vs.85).aspx
NV12
所有 Y 样本首先出现在内存中,作为具有偶数行的 unsigned char 值数组。 Y 平面后面紧跟一组 unsigned char 值,其中包含压缩的 U (Cb) 和 V (Cr) 样本。当组合的 U-V 数组被寻址为 little-endian WORD 值的数组时,LSB 包含 U 值,MSB 包含 V 值。 NV12 是 DirectX VA 的首选 4:2:0 像素格式。预计它将成为支持 4:2:0 视频的 DirectX VA 加速器的中期要求。下图显示了 Y 平面和包含压缩 U 和 V 样本的数组。
我的理解是:在 UV 平面中每个 U 和 V 都存储在单个字节中。
当我从维基百科上读到这个时: https://wiki.videolan.org/YUV#NV12
上面写着:
NV12
与 I420 相关,NV12 有一个亮度“亮度”平面 Y 和一个 U 和 V 值交错的平面。 在 NV12 中,色度平面(蓝色和红色)在水平和垂直维度上都被二次采样 2 倍。 对于 2x2 像素组,您有 4 个 Y 样本和 1 个 U 和 1 V 样本。 将 NV12 视为 U 和 V 平面交错的 I420 会有所帮助。 这是 NV12 的图形表示。每个字母代表一位: 对于 1 个 NV12 像素:YYYYYYYY UVUV 对于 2 像素 NV12 帧:YYYYYYYYYYYYYYYY UVUVUVUV 对于 50 像素 NV12 帧:Y*8*50 (UV)*2*50 对于 n 像素 NV12 帧:Y*8*n (UV)*2*n
我在这里的理解是:每个 U 和 V 在每个字节中逐位交错。所以UV平面的每个字节都会包含4U位和4V位交错。
谁能澄清我的疑问?
【问题讨论】:
-
没有位交错,(仅)字节交错。
标签: image-processing yuv image-formats nv12-nv21