Поделиться через


10- и 16-разрядные форматы видео YUV

В этом разделе описываются 10- и 16-разрядные форматы YUV, которые рекомендуются для записи, обработки и отображения видео в операционной системе Microsoft Windows.

Этот раздел состоит из следующих подразделов.

Общие сведения

Эти форматы используют представление с фиксированной запятой как для каналов luma, так и для каналов chroma (C'b и C'r). Выборка значений масштабируется 8-разрядными значениями с коэффициентом масштабирования 2^(n − 8), где n равно 10 или 16, согласно разделам 7.7–7.8 и 7.11–7.12 SMPTE 274M. Преобразования точности можно выполнять с помощью простых битовых сдвига. Например, если белая точка 8-разрядного формата имеет значение 235, соответствующий 10-разрядный формат имеет белую точку в 940 (235 × 4).

В 16-разрядных представлениях, описанных здесь, используются значения WORD с минимальным байтом для каждого канала. В 10-разрядных форматах также используется 16 битов для каждого канала, а для наименьших 6 бит задано значение 0, как показано на следующей схеме.

схема, показывающая 10-битное представление

Так как 10-разрядные и 16-разрядные представления одного и того же формата YUV имеют одинаковый макет памяти, можно привести 10-разрядное представление к 16-разрядному представлению без потери точности. Кроме того, можно привести 16-разрядное представление к 10-разрядному. (Однако форматы Y416 и Y410 являются исключением из этого общего правила, так как они не используют один и тот же макет памяти.)

Когда графическое оборудование считывает поверхность, содержащую 10-битовое представление, оно должно игнорировать 6 бит нижнего порядка каждого канала. Однако если поверхность содержит допустимые 16-разрядные данные, она должна быть определена как 16-разрядная поверхность.

В форматах, содержащих альфа, полностью прозрачный пиксель имеет альфа-значение, равное нулю, а полностью непрозрачный пиксель имеет альфа-значение (2^n) – 1, где n — количество альфа-битов. Альфа считается линейным значением, которое применяется к каждому компоненту после преобразования компонента в нормализованную линейную форму.

Для изображений в видеопамях графический драйвер выбирает выравнивание памяти поверхности. Поверхность должна быть выровнена по DWORD . То есть отдельные линии в пределах поверхности гарантированно начинаются с 32-разрядной границы, хотя выравнивание может быть больше 32 бит. Источником (0,0) всегда является левый верхний угол поверхности.

Для целей этой документации термин U эквивалентен Cb, а термин Vcr.

Коды FOURCC для 10-разрядных и 16-разрядных yuv

Коды FOURCC для форматов, описанных здесь, используют следующее соглашение:

  • Если формат имеет плоскую структуру, первым символом в коде FOURCC является "P". Если формат упакован, первым символом будет "Y".

  • Второй символ в коде FOURCC определяется выборкой хрома, как показано в следующей таблице.

    Выборка хрома Кодовая буква FOURCC
    4:4:4 '4'
    4:2:2 '2'
    4:2:1 1
    4:2:0 "0"

     

  • Последние два символа в FOURCC указывают количество битов на канал: "16" для 16 бит или "10" для 10 бит.

С помощью этой схемы определены следующие коды FOURCC. В настоящее время не определены форматы 4:2:1 для 10-разрядных или 16-разрядных yuv.

FOURCC Описание
P016 Planar, 4:2:0, 16-bit.
P010 Planar, 4:2:0, 10-bit.
P216 Planar, 4:2:2, 16-bit.
P210 Planar, 4:2:2, 10-bit.
Y216 Упакованы, 4:2:2, 16-разрядный.
Y210 Упакованы, 4:2:2, 10-бит.
Y416 Упакованный, 4:4:4, 16-разрядный
Y410 Упакованная, 4:4:4, 10-разрядная.

 

Идентификаторы GUID подтипа также были определены из этих 4CC; См. раздел Идентификаторы GUID подтипа видео.

Определения Surface

В этом разделе описывается макет памяти для каждого формата. В следующих описаниях термин WORD относится к 16-разрядному значению с малым байтом, а термин DWORD — к 32-разрядному значению с малым байтом.

Форматы 4:2:0

Определены два формата 4:2:0 с кодами FOURCC P016 и P010. Они используют один и тот же макет памяти, но P016 использует 16 бит на канал, а P010 — 10 бит на канал.

P016 и P010

В этих двух форматах все примеры Y отображаются в памяти в виде массива объектов WORDс четным числом строк. Шаг поверхности может быть больше ширины плоскости Y. За этим массивом сразу же следует массив word, содержащий чередующиеся примеры V и you, как показано на следующей схеме.

схема, показывающая макет p016 и p010 пикселей

Если объединенный массив U-V рассматривается как массив DWORD, наименее значащее слово (LSW) содержит значение U, а наиболее значимое слово (MSW) — значение V. Шаг объединенной плоскости U-V равен шагу плоскости Y. Плоскость U-V имеет в два раза меньше линий, чем плоскость Y.

Эти два формата являются предпочтительными форматами плоский пиксель 4:2:0 для представлений yuv с более высокой точностью. Они должны быть промежуточным требованием для ускорителей DirectX Video Acceleration (DXVA), поддерживающих 10- или 16-разрядное видео 4:2:0.

Форматы 4:2:2

Определены четыре формата 4:2:2, два плоского и два упакованных. Они имеют следующие коды FOURCC:

  • P216
  • P210
  • Y216
  • Y210

P216 и P210

В этих двух плоских форматах все примеры Y отображаются в памяти в виде массива объектов WORDс четным числом строк. Шаг поверхности может быть больше ширины плоскости Y. За этим массивом сразу же следует массив word, содержащий чередующиеся примеры V и you, как показано на следующей схеме.

схема, показывающая макет p216 и p210 пикселей

Если объединенный массив U-V рассматривается как массив DWORD, LSW содержит значение U, а MSW — значение V. Шаг объединенной плоскости U-V равен шагу плоскости Y. Плоскость U-V имеет то же количество линий, что и плоскость Y.

Эти два формата являются предпочтительными форматами плоский пиксель 4:2:2 для представлений yuv с более высокой точностью. Они должны быть промежуточным требованием для ускорителей DirectX Video Acceleration (DXVA), которые поддерживают 10- или 16-разрядное видео 4:2:2.

Y216 и Y210

В этих двух упакованных форматах каждая пара пикселей хранится в виде массива из четырех элементов WORD, как показано на следующем рисунке.

схема, показывающая макет пикселей y216 и y210.

Первый пример WORD в массиве содержит первый пример Y в паре, второй пример U, третий второй пример Y, а четвертый — пример V .

Y210 идентичен Y216, за исключением того, что каждая выборка содержит только 10 бит значимых данных. Для наименее значимых 6 бит устанавливается нулевое значение, как описано ранее.

Форматы 4:4:4

Определены два формата 4:4:4 с кодами FOURCC Y410 и Y416. Оба формата являются упакованными.

Y410

Этот формат представляет собой упакованную 10-битную версию, которая включает 2 бита альфа-канала. Каждый пиксель закодирован в виде одного DWORD с макетом памяти, показанным на следующей схеме.

схема, показывающая макет y410 пикселей.

Биты 0–9 содержат образец U, биты 10–19 — выборку Y, биты 20–29 — образец V, а биты 30–31 — альфа-значение. Чтобы указать, что пиксель является полностью непрозрачным, приложение должно задать два альфа-бита, равные 0x03.

Y416

Этот формат представляет собой упакованную 16-битную версию, включающую 16 бит альфа-файлов. Каждый пиксель закодирован в виде пары DWORD, как показано на следующем рисунке.

схема, показывающая макет y416 пикселей.

Биты 0–15 содержат образец U, биты 16–31 содержат образец Y, биты 32–47 содержат образец V, а биты 48–63 — альфа-значение.

Чтобы указать, что пиксель является полностью непрозрачным, приложение должно задать два альфа-байта, равные 0xFFFF. Этот формат предназначен в первую очередь как промежуточный формат во время обработки изображения, чтобы избежать накопления ошибок.

Предпочтительные форматы YUV

В следующей таблице перечислены предпочтительные форматы YUV, в том числе 8-разрядные.

Формат Выборка хрома Упакованная или плоска Число битов на канал
AYUV 4:4:4 Упакованные 8
Y410 4:4:4 Упакованные 10
Y416 4:4:4 Упакованные 16
AI44 4:4:4 Упакованные Палеттизированный
YUY2 4:2:2 Упакованные 8
Y210 4:2:2 Упакованные 10
Y216 4:2:2 Упакованные 16
P210 4:2:2 Плоские 10
P216 4:2:2 Плоские 16
NV12 4:2:0 Плоские 8
P010 4:2:0 Плоские 10
P016 4:2:0 Плоские 16
NV11 4:1:1 Плоские 8

 

Если объект поддерживает заданную битовую глубину и схему выборки хрома, рекомендуется поддерживать соответствующие форматы YUV, перечисленные в этой таблице. (Объекты могут поддерживать дополнительные форматы, не перечисленные здесь.)

Рекомендуемые 8-разрядные форматы YUV для отрисовки видео

Идентификаторы GUID для подтипов видео

Типы видеофайла