Формат NV12 и УФ-плоскость

Я немного запутался в формате NV12. Я ищу эту страницу, чтобы понять формат. В настоящее время я понимаю, что если у вас есть изображение или видео 640 x 480 уменьшение тогда плоскость Y будет иметь 640 x 480 байты и U и V обе плоскости имеют 640/2 x 480/2, Это не значит, что у самолета есть 640/2 x 480/2 и V плоскости есть 640/2 x 480/2 оба имеют только 640/2 x 480/2 байт. поэтому общее количество байтов в массиве буфера будет. 2 умножается на (640/2) * (480/2) потому что ультрафиолетовый самолет займет два байта.

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

так что вопрос в том, что я правильно понимаю? и я делаю массив байтов в формате, который определяет формат NV12.

3 ответа

Решение

Формат NV12 субдискретизирован как 4:2:0

420

Общий размер кадра W x H x 3 / 2 Где W - ширина, а H - высота.

1 кадр в разрешении vga составляет 460800 байт, где

  • Y-часть размером 640x480 байт
  • Cb-часть составляет 640*480/4=76800 байт.
  • Cr-часть составляет 640*480/4=76800 байт.

Надеюсь, что это ответ на ваш вопрос...

Чтобы добавить к первому ответу, формат NV12 чередует данные цветности U и V.

Для 640x480 кадра изображения, представление NV12 состоит из 720 строк по 640 байтов:

  • первые 480 строк содержат по 640 значений яркости (Y).

  • последние 240 строк содержат 320 кортежей значений (U,V).

Да, вы все правильно понимаете.

Формат YUV NV12 имеет одну плоскость Y размера изображения высота * ширина и другую половину плоскости, состоящую из субдискретизированных чередующихся значений UV (высота / 2 * ширина / 2). Общий размер, как вы правильно подсчитали, это высота * ширина + 2 * (высота/2 * ширина/2) = 3/2 * высота * ширина

NV12 имеет 12 бит на пиксель.

==============

Как указано на сайте Microsoft, перейдите в раздел NV12:

ЮВ-сэмплирование

Каналы цветности могут иметь более низкую частоту дискретизации, чем канал яркости, без существенной потери качества восприятия. Обозначение, называемое обозначением «A:B:C», используется для описания того, как часто U и V выбираются относительно Y:

  • 4:4:4 означает отсутствие понижающей дискретизации каналов цветности.
  • 4:2:2 означает горизонтальное понижение частоты дискретизации 2:1 без вертикального понижения частоты дискретизации. Каждая строка сканирования содержит четыре отсчета Y на каждые два отсчета U или V.
  • 4:2:0 означает понижение частоты дискретизации 2:1 по горизонтали и 2:1 по вертикали.
  • 4:1:1 означает горизонтальное понижение частоты дискретизации 4:1 без вертикального понижения частоты дискретизации. Каждая строка сканирования содержит четыре отсчета Y для каждого отсчета U и V. Выборка 4:1:1 менее распространена, чем другие форматы, и подробно в этой статье не обсуждается.

На следующих диаграммах показано, как производится выборка цветности для каждой скорости понижения дискретизации. Образцы яркости представлены крестом, а образцы цветности представлены кружком.

Рисунок 1: Подвыборка пиксельных данных

НВ12

Все образцы Y сначала появляются в памяти в виде массива значений без знака char с четным количеством строк. Сразу за плоскостью Y следует массив беззнаковых значений char, который содержит упакованные образцы U (Cb) и V (Cr). Когда комбинированный UV-массив адресуется как массив значений WORD с прямым порядком байтов, младшие биты содержат значения U, а старшие биты содержат значения V. NV12 является предпочтительным форматом пикселей 4:2:0 для DirectX VA. Ожидается, что это будет промежуточным требованием для ускорителей DirectX VA, поддерживающих видео 4:2:0. На следующем рисунке показана плоскость Y и массив, содержащий упакованные выборки U и V.

Рисунок 2: введите здесь описание изображения

Другие вопросы по тегам