【问题标题】:NV12 format and UV planeNV12格式和UV平面
【发布时间】:2013-07-03 10:45:53
【问题描述】:

我对 NV12 格式有点困惑。我正在查看this 页面以了解格式。 我目前的理解是,如果您有640 x 480 diminsion 的图像或视频,那么 Y 平面将具有 640 x 480 字节,U 和 V 两个平面都有 640/2 x 480/2。这并不意味着 U 平面有 640/2 x 480/2 和 V 平面有 640/2 x 480/2 两者都只有 640/2 x 480/2 字节。所以输出缓冲区数组中的总字节数将是。 2 与(640/2) * (480/2) 相乘,因为 uv 平面将占用两个字节。

byte [] myArray new byte[(640 * 480) + (2 * (640/2) * (480/2)) ];

所以问题是我以正确的方式理解它?我是否以指定 NV12 格式的格式制作字节数组。

【问题讨论】:

  • 所以“数组将是,2 乘以 (640/2) * (480/2),因为 uv 平面将占用两个字节。”我没听懂。

标签: c# yuv color-space libyuv nv12-nv21


【解决方案1】:

为了补充第一个答案,NV12 格式将 U 和 V 色度数据交错。

对于640x480 图像帧,NV12 表示由 720 行 640 字节组成:

  • 前 480 行每行包含 640 个亮度 (Y) 值。

  • 最后 240 行每行包含 320 个 (U,V) 值的元组。

【讨论】:

    【解决方案2】:

    NV12 格式被二次采样为 4:2:0

    一个框架的总大小是W x H x 3 / 2,其中W是宽度,H是高度。

    vga 分辨率中的 1 帧为 460800 字节,其中

    • Y 部分为 640x480 字节
    • Cb 部分为 640*480/4=76800 字节
    • Cr 部分为 640*480/4=76800 字节

    希望这能回答您的问题...

    【讨论】:

      猜你喜欢
      • 2016-07-08
      • 1970-01-01
      • 2013-09-11
      • 2012-02-16
      • 2017-05-12
      • 2011-08-20
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      相关资源
      最近更新 更多