10- и 16-разрядные форматы видео YUV
В этом разделе описываются 10- и 16-разрядные форматы YUV, которые рекомендуются для записи, обработки и отображения видео в операционной системе Microsoft Windows.
Этот раздел состоит из следующих подразделов.
- Обзор
- Коды FOURCC для 10-разрядных и 16-разрядных yuv
- Определения Surface
- Предпочтительные форматы YUV
- Связанные темы
Общие сведения
Эти форматы используют представление с фиксированной запятой как для каналов 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-разрядные и 16-разрядные представления одного и того же формата YUV имеют одинаковый макет памяти, можно привести 10-разрядное представление к 16-разрядному представлению без потери точности. Кроме того, можно привести 16-разрядное представление к 10-разрядному. (Однако форматы Y416 и Y410 являются исключением из этого общего правила, так как они не используют один и тот же макет памяти.)
Когда графическое оборудование считывает поверхность, содержащую 10-битовое представление, оно должно игнорировать 6 бит нижнего порядка каждого канала. Однако если поверхность содержит допустимые 16-разрядные данные, она должна быть определена как 16-разрядная поверхность.
В форматах, содержащих альфа, полностью прозрачный пиксель имеет альфа-значение, равное нулю, а полностью непрозрачный пиксель имеет альфа-значение (2^n) – 1, где n — количество альфа-битов. Альфа считается линейным значением, которое применяется к каждому компоненту после преобразования компонента в нормализованную линейную форму.
Для изображений в видеопамях графический драйвер выбирает выравнивание памяти поверхности. Поверхность должна быть выровнена по DWORD . То есть отдельные линии в пределах поверхности гарантированно начинаются с 32-разрядной границы, хотя выравнивание может быть больше 32 бит. Источником (0,0) всегда является левый верхний угол поверхности.
Для целей этой документации термин U эквивалентен Cb, а термин V — cr.
Коды 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, как показано на следующей схеме.
Если объединенный массив 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, как показано на следующей схеме.
Если объединенный массив 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, как показано на следующем рисунке.
Первый пример WORD в массиве содержит первый пример Y в паре, второй — пример U, третий — второй пример Y, а четвертый — пример V .
Y210 идентичен Y216, за исключением того, что каждая выборка содержит только 10 бит значимых данных. Для наименее значимых 6 бит устанавливается нулевое значение, как описано ранее.
Форматы 4:4:4
Определены два формата 4:4:4 с кодами FOURCC Y410 и Y416. Оба формата являются упакованными.
Y410
Этот формат представляет собой упакованную 10-битную версию, которая включает 2 бита альфа-канала. Каждый пиксель закодирован в виде одного DWORD с макетом памяти, показанным на следующей схеме.
Биты 0–9 содержат образец U, биты 10–19 — выборку Y, биты 20–29 — образец V, а биты 30–31 — альфа-значение. Чтобы указать, что пиксель является полностью непрозрачным, приложение должно задать два альфа-бита, равные 0x03.
Y416
Этот формат представляет собой упакованную 16-битную версию, включающую 16 бит альфа-файлов. Каждый пиксель закодирован в виде пары DWORD, как показано на следующем рисунке.
Биты 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, перечисленные в этой таблице. (Объекты могут поддерживать дополнительные форматы, не перечисленные здесь.)
Связанные темы