gpt4 book ai didi

image-processing - 图像格式 NV12 存储在内存中

转载 作者:行者123 更新时间:2023-12-04 03:11:09 24 4
gpt4 key购买 nike

我完全了解所描述的 NV12 格式的大小

NV12 format and UV plane

现在我正在从两个来源阅读有关以这种格式存储 UV 平面的信息:
一个是https://msdn.microsoft.com/en-us/library/windows/desktop/dd206750(v=vs.85).aspx

NV12

所有 Y 样本首先在内存中作为偶数行的无符号字符值数组出现。 Y 平面后紧跟一个包含压缩 U (Cb) 和 V (Cr) 样本的无符号字符值数组。当组合的 U-V 数组被寻址为小端 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位。

谁能澄清我的疑惑?

最佳答案

TL;DR:MSDN 是正确的

要验证这一点(或至少验证在位级别上没有交织),可以使用 ffmpeg ,这是一种广泛使用的视频工具。我做了以下实验:

  • 制作一个包含一些文本的文件(我以 Lorem Ipsum 文本为例)
  • 告诉 ffmpeg将其读作 I420一些小尺寸的视频帧
  • 告诉 ffmpeg将其转换为 NV12格式
  • 打印

  • 以下是 (2) 和 (3) 的示例命令行:
    ffmpeg -s 96x4 -i example_i420.yuv -pix_fmt nv12 example_nv12.yuv

    这是我在输出中得到的:

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sutnett uirn acduilppias cqiunig oeflfiitc,i as edde sdeor uenitu smmooldl itte mapnoirm iindc iedsitd ulnatb ourtu ml.a bLoorree me ti pdsoulmo rdeo lmoarg nsai ta laimqeuta,. cUotn seenci



    我用粗体标记了色度(U 和 V)样本。很明显,这些是相同的值(ASCII 字母),只是按加扰顺序排列。如果执行任何位交错,我会得到不同的值。

    所以 VLC wiki 中的描述(顺便说一句,它是 而不是 维基百科)是不正确的。名为“Edwardw”的人添加了提及像素的“插图” here ,后来改为“位” here .我希望有人改变它以减少误导(维基需要注册,所以我不能编辑它)。

    关于image-processing - 图像格式 NV12 存储在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31426515/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com